看Few-Shot Learning也好好几篇文章了,但是关于一些最基本的概念都没怎么搞清楚。例如,Few-Shot Learning文章中经常提到一个概念叫做Meta Learning,之前只是知道元学习就是学习如何学习,但是并没有深入理解。现在稍微了解总结总结。
字面意思
首先,看到Meta Learning这个词汇,就一头污水。翻译过来为元学习,那么如何理解元学习中的“元”字呢?正好最近在知乎上有一个这样的问题——如何理解元学习中的“元”字? - 知乎。感觉如何理解元学习中的“元”字? - lintongmao的回答 - 知乎回答的很好。这里引用一下。
元学习是Meta-Learning,按翻译中约定俗成的习惯,将“meta-”译作“元”。
meta- 这个词缀来源于希腊语,有beyond, after等含义。在现代英语中,一般表示“related to”,往往表示与自身相关。这样说太过模糊,我来举几个例子:
- meta-problem: a problem related to other problems;
- meta-data: data about data;
- meta-joke: a joke about jokes.
总结一下,meta-词缀一般有这样的规律:
meta-X = X about / related to X’s
所以meta-learning意思就是learning about learning,或者,Learning to learn。这也就是“元学习”的由来。
一般的深度学习算法从大量的数据集中学习如何对这些已知类进行分类,损失函数是关于训练集的;而元学习从大量的meta-task中学习如何对查询集进行分类的一种能力,损失函数是关于查询集的,所以很自然的可以扩展到元测试阶段(元训练阶段没见过的新类)。
所以个人觉得,元学习和迁移学习不同点在于元学习从大量的task中学到了对查询集进行分类的能力,然而迁移学习在训练阶段始终都没有对测试集参与,因此没有学习到提取知识的能力,只是学习到了知识。而在元学习中,之所以采用task,而不是采用训练集+测试集这样的方式,是因为后者数据量太大,不利于元学习学习提取知识的能力。
关于与Few-Shot Learning的关系,在知乎上也有这样的一个问题——求问meta-learning和few-shot learning的关系是什么? - 知乎。看了下面的回答,我总结如下:
Few-Shot Learning问题定义为如何训练一个模型使其基于少量的训练样本能在目标任务中获得好的性能。如果真的只有少量的训练样本,那么这个问题几乎无解。但是Meta Learning假设更加充分,它假设:1) 存在一个任务分布,2) 你的目标新任务也服从该分布,3) 可以获得一个(从任务分布)iid采样的元训练集用来训练你的模型,4) 以及一个iid采样(且与元训练集互斥)的元测试集来估计你的模型应用于目标任务的期望性能。因此虽然我没有目标任务上的大量训练样本,但是我有大量相似任务的少量训练样本作为代偿。